u3: OOP first vs later

Die Aufgabenstellung finden Sie hier: https://informatik-franke.de/lehre/sose/fadiinf/u3.html

Aufgaben

Definition und Grundprinzipien der Objektorientierung
Definition Objektorientierung

Objektorientierte Programmierung (OOP) ist ein Ansatz zur Softwareentwicklung, der Programme durch den Einsatz von Klassen und Objekten strukturiert. Klasssen dienen als 'Schablonen' oder 'Baupläne', die festlegen welche Eigenschaften (genannt Daten) und Fähigkeiten (genannt Methoden) daraus hergestellte Objekte haben.

Ein Objekt ist eine Instanz einer Klasse, aus der Schablone konkret gebaut, mit spezifischen Werten für seine Eigenschaften und mit der Fähigkeit, konkrete Aktionen durchzuführen.

OOP hilft, komplexe Programme in kleinere, wiederverwendbare und leichter verständliche Teile zu zerlegen. Dies soll die Wartung und Erweiterung von Software erleichtern.

Vorteile Objektorientierung

Von https://informatik-franke.de/lehre/wise/oop-python/u20.html

Darstellung der Ansätze "Objects First" und "Objects Later"

Bei Objects first gibt es verschiedene Ansätze:

In irgendeiner Art, werden also die Objekte zuerst modelliert, implementiert aber auf jeden Fall instanziert.

Vergleich und Kontrastierung der Ansätze
Objects-First Objects-Later
Reihenfolge der Themen Objektorientierte Themen kommen früh (z. B. Klassen und Objekte werden schon zu Beginn eingeführt). Erst die prozeduralen Grundlagen, dann später objektorientierte Konzepte.
Schwierigkeitswahrnehmung In manchen Themen können OOP-First-Schüler Probleme haben, wenn sie bereits früh mit Abstraktion (Klassen, Objekte, etc.) konfrontiert werden, bevor Grundlagen wie Kontrollstrukturen, einfache Datenstrukturen etc. gefestigt sind. (→ höhere kognitive Belastung) Lernende haben zuerst Gelegenheit, einfache Programmierprinzipien zu üben und sich mit Basis-Programmiekonzepten sicher zu fühlen, bevor komplexere (OOP) Konzepte folgen.
Motivation / Einstellung Früh gewonnenes Interesse an OOP, evtl. schnelleres Verständnis des OO-Paradigmas, evtl. weniger Furcht vor „Objektorientierung“. Schule und Studierende berichten manchmal, dass OOP-First motivierender wirkt. (Das zeigen auch andere Studien, z. B. “Outside-In”-Ansätze.) (arXiv) Motivation kann während der Wartezeit bis zur Einführung von OOP geringer sein oder das Interesse könnte erst später steigen.
Bewertung der Vor- und Nachteile
Objects-First
Vorteile Nachteile
Objects-Later
Vorteile Nachteile

Eigene Schlussfolgerung

Die Studie von Ehlert zeigt, dass es in einem Schuljahr mit gleichen Themen keine großen Unterschiede im Lernerfolg gibt.
Es macht also Sinn, die Anstäze angepasst auf die Schüler:innnen und deren Lernsituation anzuwenden. Abhängig von deren Wahrnehmung, Motivation und Anspruch kann eher mit dem einen oder anderen Ansatz begonnen werden.

Der bessere Ansatz hängt vorallem ab von den Vorkenntnissen der Schüler:innen, dem gegebenen Zeitrahmen (längerfristig vielleicht mehr OOP first, kurzfristig lieber Fokus auf Kontrollstrukturen) und natürlich den gegebenen didaktischen und materiellen Möglichkeiten.

Ich würde mit Schüler:innen umso eher mit OOP-First anfangen, je wahrscheinlicher es ist, dass sie längerfristigen Informatikunterricht haben. Also Klassen, die in der Schule wahrscheinlich noch viele Jahre Informatikunterricht haben werden. Auch würde ich OOP-First eher verwenden in technischem Umfeld, bei Schüler:innen bei deinen eine Karriere mit Programmieranteil wahrscheinlicher ist.

Handelt es sich dagegen um Schüler:innen die lediglich einen Einblick in die Informatik erhalten, würde ich den Fokus mehr auf programmatisches, strukturiertes Denken mit klassischem prozeduralen Ansatz legen.

Quelle

DissEhlertElektronisch2012oL.pdf